<?php
require_once "config.php";
/**
 * 获取微信用户信息
 * @author: Lucky hypo
 */
class GetWxData{
    private $appid = 'wx16320d7479a5774c';
    private $appsecret = 'e111c965e8d4ba6a2ff1a99724f6d573';
    /**
     * 1、获取微信用户信息，判断有没有code，有使用code换取access_token，没有去获取code。
     * @return array 微信用户信息数组
     */
    public function get_user_all(){
        if (!isset($_GET['code'])){//没有code，去微信接口获取code码
            $callback = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];//微信服务器回调url，这里是本页url
            $this->get_code($callback);
        } else {//获取code后跳转回来到这里了
            $code = $_GET['code'];
            $data = $this->get_access_token($code);//获取网页授权access_token和用户openid
            $data_all = $this->get_user_info($data['access_token'],$data['openid']);//获取微信用户信息
            return $data_all;
        }
    }
    /**
     * 2、用户授权并获取code
     * @param string $callback 微信服务器回调链接url
     */
    private function get_code($callback){
        $appid = $this->appid;
        $scope = 'snsapi_userinfo';
        $state = md5(uniqid(rand(), TRUE));//唯一ID标识符绝对不会重复
        $url = 'https://api.weixin.qq.com/connect/oauth2/authorize?appid=' . $appid . '&redirect_uri=' . urlencode($callback) .  '&response_type=code&scope=' . $scope . '&state=' . $state . '#wechat_redirect';
        header("Location:$url");
    }
    /**
     * 3、使用code换取access_token
     * @param string 用于换取access_token的code，微信提供
     * @return array access_token和用户openid数组
     */
    private function get_access_token($code){
        $appid = $this->appid;
        $appsecret = $this->appsecret;
        $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';
        $user = json_decode(file_get_contents($url));
        if (isset($user->errcode)) {
            echo 'error:' . $user->errcode.'<hr>msg  :' . $user->errmsg;exit;
        }
        $data = json_decode(json_encode($user),true);//返回的json数组转换成array数组
        $data['expire_time'] = time()+$data['expires_in'];
        return $data;
    }
    /**
     * 4、使用access_token获取用户信息
     * @param string access_token
     * @param string 用户的openid
     * @return array 用户信息数组
     */
    private function get_user_info($access_token,$openid){
        $url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';
        $user = json_decode(file_get_contents($url));
        if (isset($user->errcode)) {
            echo 'error:' . $user->errcode.'<hr>msg  :' . $user->errmsg;exit;
        }
        $data = json_decode(json_encode($user),true);//返回的json数组转换成array数组
        return $data;
    }

    //对外开放，获取access_token
    public function get_access_token_open(){
        if (!isset($_GET['code'])){//没有code，去微信接口获取code码
            $protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://": "http://";
            //$callback = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];//微信服务器回调url，这里是本页url
            $callback = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];//微信服务器回调url，这里是本页url
            $this->get_code($callback);
        } else {//获取code后跳转回来到这里了
            $code = $_GET['code'];
            $data = $this->get_access_token($code);//获取网页授权access_token和用户openid
            return $data;
        }
    }
}
session_start();

if(empty($_SESSION['Member_info'][0]['openid']) ){
//if(empty($_SESSION['Member_info'][0]['openid']) || $_SESSION['Member_info'][0]['openid'] != $wx_info['openid'] ){
	//使用方法：
    exit('22222222');
    $getWxData = new GetWxData();
    if(isset($_GET['model']) && $_GET['model'] == 'get_access_token'){
        $wx_info = $getWxData->get_access_token_open();
    }else{
        $wx_info = $getWxData->get_user_all();
    }
	/*进入页面获取信息*/
	$sql="select * from dyspw_member where openid = '".$wx_info['openid']."'";
	$member = mysqli_query($mysql, $sql);
	$mem_info = $member->fetch_all(MYSQLI_ASSOC);
	if(empty($mem_info)){
		$time = time();
	  $add_sql = "INSERT INTO dyspw_member(username, openid, sex,regtime, logintime, avatar, live_prov, live_city, live_country)
							VALUES  ('".$wx_info['nickname']."','".$wx_info['openid']."','".$wx_info['sex']."',".$time.",".$time.",'".$wx_info['headimgurl']."','".$wx_info['province']."','".$wx_info['province']."','".$wx_info['city']."')";
	  $add_meminfo = $mysql->query($add_sql);
	  if(!empty($add_meminfo)){
		$sel_sql="select * from dyspw_member where openid = '".$wx_info['openid']."'";
		$sel_meminfo = mysqli_query($mysql, $sel_sql);
		$sel_meminfo = $sel_meminfo->fetch_all(MYSQLI_ASSOC);
		$_SESSION['Member_info'] = $sel_meminfo;
	  }
	}else{
        exit('66666666');
	  $_SESSION['Member_info'] = $mem_info;
	}
}
else{
    $getWxData = new GetWxData();
    $wx_info = $getWxData->get_user_all();

}
//微信授权获取本地调试
// $wx_info['openid'] = 'ocj7u1Y4Hvm19Kn6Ejl69Pgi_nNk';
// $sql="select * from dyspw_member where openid = '".$wx_info['openid']."'";
// $member = mysqli_query($mysql, $sql);
// $mem_info = $member->fetch_all(MYSQLI_ASSOC);
// if(empty($mem_info)){
//   $add_sql = "INSERT INTO dyspw_member(username, openid, sex,regtime, logintime, avatar, live_prov, live_city, live_country) VALUES  ('".$wx_info['nickname']."','".$wx_info['openid']."','".$wx_info['sex']."',".time().",".time().",'".$wx_info['headimgurl']."','".$wx_info['province']."','".$wx_info['province']."','".$wx_info['city']."')";
//   $add_meminfo = mysqli_query($mysql, $add_sql);
//   if(!empty($add_meminfo)){
//     $sel_sql="select * from dyspw_member where openid = '".$wx_info['openid']."'";
//     $sel_meminfo = mysqli_query($mysql, $sel_sql);
//     $sel_meminfo = $sel_meminfo->fetch_all(MYSQLI_ASSOC);
//     $_SESSION['Member_info'] = $sel_meminfo;
//   }
// }else{
//   $_SESSION['Member_info'] = $mem_info;
// }
?>
